package com.cddx.logistics.service;

import com.cddx.logistics.domain.dto.AnnualLedgerQueryDTO;
import com.cddx.logistics.domain.dto.LedgerQueryDTO;
import com.cddx.logistics.domain.dto.StockOperationCreateDTO;
import com.cddx.logistics.domain.dto.StockOperationQueryDTO;
import com.cddx.logistics.domain.pojo.StockOperation;
import com.cddx.logistics.domain.vo.*;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface StockOperationService {
    PageInfo<AnnualLedgerVO> queryAnnualLedger(AnnualLedgerQueryDTO queryDTO);
    PageInfo<StockOperationVO> queryPage(StockOperationQueryDTO queryDTO);
    StockOperationVO getById(Long stockOperationId);
    boolean create(StockOperationCreateDTO createDTO);
    boolean update(StockOperation stockOperation);
    boolean delete(Long stockOperationId);

    /**
     * 获取配变电统计数据
     */
    PowerTransformerStatsVO getPowerTransformerStats();

    PlanCompletionStatsVO getPlanCompletionStats();

    /**
     * 获取备品统计数据
     */
    Map<String, Object> getSparePartsStats(StockOperationQueryDTO queryDTO);

    /**
     * 获取新品统计数据
     */
    NewProductStatsVO getNewProductStats();

    /**
     * 获取电缆统计数据
     */
    Map<String, Object> getCableStatistics();

    /**
     * 获取线路统计信息
     * @param queryDTO
     * @return
     */
    List<LineStatsVO> getLineStats(StockOperationQueryDTO queryDTO);

    /**
     * 获取临措统计数据
     */
    Map<String, Object> getTemporaryMeasureStats(StockOperationQueryDTO queryDTO);


    /**
     * 获取项目完成率统计
     */
    ProjectCompletionRateVO getProjectCompletionRate();

    PageInfo<LedgerVO> queryPageToLedger(LedgerQueryDTO queryDTO);
}